Today's Java®-based enterprise server consists of several thousand technical components that generate hundreds of thousands of data records. Each of the components and data records is capable of being monitored. In addition there are thousands of interdependencies between the components and data records. Once an application is deployed on the enterprise server, the application effectively disappears as a single entity. Technical parts of the application are intermixed with components of both the server and other applications. The intermixing makes monitoring an availability of an entire application an expensive and time-consuming process requiring significant knowledge about the specific server architecture and technical details of both the server and applications running thereon. The complexity also leads administrators to investigate multiple false alarms from unimportant or unused technical components. To make matters worse, the applications can be spread across multiple physical hosts in a server cluster.
Java® servers typically present a rich set of universal configuration tools to allow managing different aspects of the applications that run on the server. The universal configuration tools however impose a problem: from the many applications running on the server, only a few of the tools directly bring business value and are important for the administrator. Yet, to configure the important applications the administrator has to know and understand the generic tools. Alternatively, applications can provide their own, specific-configuration tools, but this increases the development cost of the application and can lead to having multiple non-coherent and non-standardized configuration tools.